/********************************************************************************
 * Project Name		[JavaSE_Fundamentals]
 * File Name     	[TestTreeMap.java]
 * Creation Date 	[2015-01-01]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/
package collections;

import java.util.TreeSet;

/**
 * 集合框架 - java.util.TreeSet
 * 
 * @author 不落的太阳(Sean Yang aka ShortPeace)
 * @version 1.0
 * @since jdk 1.8
 * 
 */
public class TestTreeMap {

	/**
	 * 添加元素<br/>
	 * 添加成功返回true, 添加失败返回false<br/>
	 */
	public static void addElement() {
		TreeSet<String> set = new TreeSet<>();
		boolean result = set.add("one");
		System.out.println("Add one element: " + result);

		result = set.add("one");
		System.out.println("Add one element again: " + result);
	}

	/**
	 * 一些常用的方法
	 */
	public static void otherMethods() {
		TreeSet<Integer> set = new TreeSet<>();
		set.add(1);
		set.add(3);
		set.add(5);
		set.add(2);
		set.add(4);
		System.out.println(set);
		// 返回TreeSet中最小或最大的元素
		System.out.println(set.first());
		System.out.println(set.last());
		// jdk 1.6中TreeSet实现了NavigableSet接口, 下列方法属于该接口的
		System.out.println(set.descendingSet());
		// 返回小于3的最大元素, 即2, 如果元素不存在则返回null
		System.out.println(set.lower(3));
		// 返回大于4的最小元素, 即5, 如果元素不存在则返回null
		System.out.println(set.higher(4));
		// 删除并返回这个集合中最小的元素
		System.out.println(set.pollFirst());
		// 删除并返回这个集合中最大的元素
		System.out.println(set.pollLast());
	}

	public static void main(String[] args) {
		addElement();
		otherMethods();
	}
}
